<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Practice: Use Case Driven Development</title>
<meta name="uma.type" content="Practice">
<meta name="uma.name" content="use_case_driven_dev_practice">
<meta name="uma.presentationName" content="Use Case Driven Development">
<meta name="element_type" content="Practice">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_w1JD4B4jEd2bS8fFOQ7WWA"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Practice: Use Case Driven Development</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/practice.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This practice describes how to capture requirements with a combination of use cases and system-wide requirements, and then drive development and testing from those use cases.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Content References</th><td class="sectionTableCell">
<ul>
<li>
<img src="./../../../images/roadmap.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/guidances/roadmaps/how_to_adopt_E3620474.html" guid="_PJKZkMRfEdyBt8f9agIerg">How to Adopt the Use-Case Driven Development Practice</a>
</li>
</ul>
<ul>
<li>Key Concepts</li>
<ul>
<li>
<img src="./../../../images/concept.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/guidances/concepts/requirements_8006414F.html" guid="_0Wh-sMlgEdmt3adZL5Dmdw">Requirements</a>
</li>
<li>
<img src="./../../../images/concept.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/guidances/concepts/use_case_BB199D1B.html" guid="_KudM0NcJEdqz_d2XWoVt6Q">Use Case</a>
</li>
<li>
<img src="./../../../images/concept.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/guidances/concepts/actor_411726C.html" guid="_zGqO0MDpEduTGJ8i4u8TMw">Actor</a>
</li>
<li>
<img src="./../../../images/concept.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/guidances/concepts/use_case_model_CD178AF9.html" guid="_2jyfUAhVEduRe8TeoBmuGg">Use-Case Model</a>
</li>
</ul>
</ul>
<ul>
<li>Work Products</li>
<ul>
<li>
<img src="./../../../images/artifact.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/workproducts/use_case_22BE66E2.html" guid="_0VGbUMlgEdmt3adZL5Dmdw">Use Case</a>
</li>
<li>
<img src="./../../../images/artifact.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/workproducts/use_case_model_85965D1B.html" guid="_W2SgEDR5EdutE_HNDTJk5Q">Use-Case Model</a>
</li>
<li>
<img src="./../../../images/artifact.gif" height="16" width="16"><a href="./../../../core.tech.common.extend_supp/workproducts/system_wide_requirements_7D9DD47C.html" guid="_BVh9cL-CEdqb7N6KIeDL8Q">System-WideRequirements</a>
</li>
</ul>
</ul>
<ul>
<li>Tasks</li>
<ul>
<li>
<img src="./../../../images/task.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/tasks/identify_and_outline_requirements_90D272B9.html" guid="_P9cMUPV_EdmdHa9MmVPgqQ">Identify and Outline Requirements</a>
</li>
<li>
<img src="./../../../images/task.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/tasks/detail_use_case_scenarios_3DBC6A10.html" guid="_SL7N0LPdEduocbW-TPTq7A">Detail Use-Case Scenarios</a>
</li>
<li>
<img src="./../../../images/task.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/tasks/detail_system_wide_requirements_B5BBACC3.html" guid="_4z8Z0EbEEdyx8quJU3Grxg">Detail System-Wide Requirements</a>
</li>
</ul>
</ul>
<ul>
<li>Guidance</li>
<ul>
<li>Guidelines</li>
<ul>
<li>
<img src="./../../../images/guidance.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/guidances/guidelines/detail_ucs_and_scenarios_6BC56BB7.html" guid="_4BJ_YCxSEdqjsdw1QLH_6Q">Detail Use Cases and Scenarios</a>
</li>
<li>
<img src="./../../../images/guidance.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/guidances/guidelines/identify_and_outline_actors_and_ucs_BB5516A9.html" guid="_eyL0wCu-EdqSxKAVa9kmvA">Identify and Outline Actors and Use Cases</a>
</li>
<li>
<img src="./../../../images/guidance.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/guidances/guidelines/system_wide_requirements_8ED0BB6B.html" guid="_wr24gNcGEdqz_d2XWoVt6Q">Developing System-Wide Requirements Specification</a>
</li>
<li>
<img src="./../../../images/guidance.gif" height="16" width="16"><a href="./../../../practice.tech.use_case_driven_dev.base/guidances/guidelines/uc_realizations_448DDA77.html" guid="_2uan8NbyEdqu5o2S60g5LA">Use-Cases Realizations</a>
</li>
</ul>
</ul>
</ul>
</td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Inputs</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.slot.base/workproducts/technical_specification_slot_2812F7EF.html" guid="_i3vkoLS-EduDY8LNbMCDBA">[Technical Specification]</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Purpose</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableCell"><p>
    Many organizations document requirements as a list of declarative statements (or "shall" statements) that lead the team
    to focus on developing atomic functions and fine-grained assertions of need. Moreover, applications developed from
    such requirements are often difficult to use and require more time for integration and testing than applications
    developed using user-focused requirements.
</p>
<p>
    A second, more serious organizational anti-pattern is no focus on requirements at all. Many organizations simply fail
    to document requirements, leaving it to developers to discern from a perhaps vague vision document, or even nothing
    more than a meeting or conversation, what the application or system to be developed must do.
</p>
<p>
    This practice shows how to avoid these pitfalls by using use cases and scenarios to capture functional requirements.
    That approach provides development of usage scenarios that clearly express behavior (or the interaction between users
    and the system under development). Use cases categorize valuable and useful end-to-end, testable and collaborative
    behavior in which the system is involved. Non-functional requirements (such as performance, stability, usability, and
    so on) can still be captured using traditional techniques. This practice also explains how use cases and scenarios are
    best developed in conjunction with (and used to drive) other development activities, including design and
    testing.&nbsp;&nbsp;
</p></td>
</tr>
</table>
</div>
<div class="sectionHeading">How to read this practice</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableCell"><p>
    The best way to review a practice is to familiarize yourself with the enablement materials, and then review key
    concepts, work products, tasks, and the more detailed guidance, either by reviewing the guidance category directly, or
    by navigating from tasks and work products to their related guidance.
</p>
<p>
    You may first want to become familiar with general requirements concepts:
</p>
<ul>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/guidances/concepts/requirements_8006414F.html" guid="_0Wh-sMlgEdmt3adZL5Dmdw">Requirements</a>
    </li>
</ul>
<p>
    Then become familiar with use cases:
</p>
<ul>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/guidances/concepts/use_case_BB199D1B.html" guid="_KudM0NcJEdqz_d2XWoVt6Q">Use Case</a>
    </li>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/guidances/concepts/actor_411726C.html" guid="_zGqO0MDpEduTGJ8i4u8TMw">Actor</a>
    </li>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/guidances/concepts/use_case_model_CD178AF9.html" guid="_2jyfUAhVEduRe8TeoBmuGg">Use-Case Model</a>
    </li>
</ul>
<p>
    This practice focuses on the following work products:
</p>
<ul>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/workproducts/use_case_22BE66E2.html" guid="_0VGbUMlgEdmt3adZL5Dmdw">Use Case</a>
    </li>
    <li>
        <a class="elementLink" href="./../../../core.tech.common.extend_supp/workproducts/system_wide_requirements_7D9DD47C.html" guid="_BVh9cL-CEdqb7N6KIeDL8Q">System-WideRequirements</a>
    </li>
</ul>
<p>
    Both work products go through similar states: they are identified and outlined, which allows them to be prioritized,
    and then detailed. However, in general, a use case is detailed a scenario at a time. (This is particularly important
    when following an iterative approach, where a scenario is detailed "just in time" to be implemented, as opposed to the
    approach of detailing all or most requirements up front). The tasks that drive these states are listed here: <a class="elementLink" href="./../../../practice.tech.use_case_driven_dev.base/customcategories/tasks_61FD663B.html" guid="_K5oBwMSFEdyBt8f9agIerg">Tasks</a>.
</p>
<p>
    In addition, guidelines and tool mentors associated with each task provide details of how to perform the
    task.&nbsp;Templates and checklists associated with the work products guide you in their completion and evaluation.
</p>
<p>
    Measurements can guide you on assessing how well you are following this practice.
</p></td>
</tr>
</table>
</div>
<div class="sectionHeading">Additional Information</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td class="sectionTableCell"><h3>
    Books and Articles<br />
    <br />
</h3>
<table width="100%" summary="layout table" border="0">
    <tbody>
        <tr>
            <td colspan="2">
                Kurt Bittner and Ian Spence 2003. <i>Use Case Modeling.</i> Addison Wesley Longman.
            </td>
        </tr>
        <tr>
            <td width="10%">
            </td>
            <td style="PADDING-BOTTOM: 10px" width="78%">
                Comprehensive coverage of use case techniques and practices, including useful examples showing how use-case
                specifications evolve over time.
            </td>
        </tr>
        <tr>
            <td colspan="2">
                Alistair Cockburn 2001. <i>Writing Effective Use Cases.</i> Addison Wesley Longman.
            </td>
        </tr>
        <tr>
            <td width="10%">
            </td>
            <td style="PADDING-BOTTOM: 10px" width="78%">
                Excellent guidance for those who need to write use cases. Multiple styles and techniques contrasted with
                insight in an unbiased way. Many helpful tips to improve your use cases.
            </td>
        </tr>
    </tbody>
</table></td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
